
#include "StdAfx.h"
#include <vector>
#include "NodeX.h"

class CDijkstras
{
public:
	CDijkstras(CNodePtrVec* vecNodes);
    ~CDijkstras(void);

    void SetSource(CNode* source);
    void GetPathTo(CNode* dest, CNodePtrVec& path);

protected:
	void Run();
	int PixelDist(CNode* from, CNode* to);
	void GetAdjacentNodes(CNode* node, CNodePtrVec& vecAdjNodes);
	CNode* GetSmallestNode();
	bool NodeInList(CNode* node);
	void PrintShortestRouteTo(CNode* destination, CNodePtrVec& vecPath);

    CNode* m_source;
	CNodePtrVec m_vecNodes;
    CNodePtrVec m_vecNodesCopy;
};